package cliente.mediador;

import cliente.ClienteConection;
import cliente.Funciones;
import cliente.gui.*;

import cliente.mediador.*;
import comun.dto.*;

import comun.iControl.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.StringTokenizer;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class MediadorAltaCliente implements ActionListener {
	private GUIAltaCliente guiAltaCliente = null;
	public IControlCliente controlCliente;
	public Funciones fun;

	public MediadorAltaCliente() throws Exception {
		ClienteConection clienteConexion = new ClienteConection();
		try{
			clienteConexion.iniciar();
		}catch(Exception ex){
			ex.printStackTrace();
		}
		this.controlCliente=clienteConexion.getIControlCliente();
		guiAltaCliente = new GUIAltaCliente();
		fun=new Funciones();
		guiAltaCliente.setActionListeners(this);
		show();
	}



	private void show() {  	    	
		guiAltaCliente.setSize(362,258);
		guiAltaCliente.getJPanel().setVisible(false);
		guiAltaCliente.show();
	}

	public void actionPerformed(ActionEvent e) {
		Object source = e.getSource();
		if (source==guiAltaCliente.getComboOpcion()){
			int indiceOpcion=guiAltaCliente.getComboOpcion().getSelectedIndex();
			if (indiceOpcion==0){
				guiAltaCliente.setSize(362,258);
				guiAltaCliente.getJPanel().setVisible(false);
			}
			else{

				guiAltaCliente.setSize(685,256);
				guiAltaCliente.getJPanel().setVisible(true);
			}
		}        
		else if (source == guiAltaCliente.getJAceptar()) {
			String nombre = guiAltaCliente.getNombre().getText().toUpperCase();
			String conAnteIva = guiAltaCliente.getCondIva().toUpperCase();
			String NumeroIngBruto= guiAltaCliente.getNumIngBruto().getText().toUpperCase();
			String localidad= guiAltaCliente.getLocalidad().getText().toUpperCase();
			String telefono= guiAltaCliente.getTel().getText().toUpperCase();
			String domicilio= guiAltaCliente.getDomicilio().getText().toUpperCase();
			String cuit= guiAltaCliente.getCuit().getText().toUpperCase();
			String esCliente= guiAltaCliente.getOpcion().toUpperCase();
			                   
			try {
				if (nombre.length()==0){
					JOptionPane.showMessageDialog(new JFrame(),"El campo nombre no puede ser vacio","CAMPO INCOMPLETO",JOptionPane.ERROR_MESSAGE);
				}else { 
					if(this.controlCliente.existeCliente(cuit)){
						JOptionPane.showMessageDialog(new JFrame(),"Cuit ya existenten es unico para cada cliente !!!","INFORME DE Cliente",JOptionPane.INFORMATION_MESSAGE);
					}
					else {   
						if ((cuit.length()==0)|| (fun.cuitValido(cuit)==false)) {
							JOptionPane.showMessageDialog(new JFrame(),"El campo cuit es vacio o no es correcto","CAMPO INCOMPLETO",JOptionPane.ERROR_MESSAGE);
							guiAltaCliente.getCuit().setText(guiAltaCliente.getCuit().getText());     
						} 
						else {
							ClienteDTO cDTO = new ClienteDTO();
							cDTO.setNombre(nombre);
							cDTO.setCondIva(conAnteIva);
							cDTO.setCuit(cuit);
							cDTO.setNroIngBruto(NumeroIngBruto);
							if (guiAltaCliente.getOpcion().contentEquals("SI")){
								guiAltaCliente.getJPanel().setVisible(true);
								cDTO.setLocalidad(localidad);
								cDTO.setTelefono(telefono);
								cDTO.setDomicilio(domicilio);
								cDTO.setesCliente("SI");
							}
							else{
								cDTO.setLocalidad("******");
								cDTO.setTelefono("******");
								cDTO.setDomicilio("******");
								cDTO.setesCliente("NO");
							}
							if (this.controlCliente.addClienteDTO(cDTO)) {
								JOptionPane.showMessageDialog(new JFrame(),"Cliente GRABADo !!!","INFORME DE Cliente",JOptionPane.INFORMATION_MESSAGE);
							}


						}
					}

				}  
			}
			catch (Exception p) {
				System.out.println("Error en MediadorCliente:");
				System.out.println(p.toString());
			}
		} 
		else if (source == guiAltaCliente.getCancelar()) {
			guiAltaCliente.dispose();
		}
	}

}
